package com.example.studyapp;

//通讯json协议
//每个子class名称要与json_enum_dataclass对应，其中分为两个结构客户端（client）和服务端（server）。
//两个结构包含了相同一一对应的结构
public class Jstruct{
    Jstruct(json_enum_dataclass e,json_enum_cs cs){
        if(cs==json_enum_cs.server){
            server=new server();
            //server=new server();
            //初始化变量
            switch(e) {
                case login:{
                    server.login=new server.login();
                }break;
                case logout:{
                    server.logout=new server.logout();
                }break;
                case register:{
                    server.register=new server.register();
                }break;
                case signup:{
                    server.signup=new server.signup();
                }break;
                case change_username:{
                    server.change_username=new server.change_username();
                }break;
                case change_password:{
                    server.change_password=new server.change_password();
                }break;
                case paper_list:{
                    server.paper_list=new server.paper_list();
                }break;
                case paper:{
                    server.paper=new server.paper();
                }break;
                case paper_item:{
                    server.paper_item=new server.paper_item();
                }break;
                case database_list:{
                    server.database_list=new server.database_list();
                }break;
                case database_change:{
                    server.database_change=new server.database_change();
                }break;
			/*case database:{
				server.database=new server.login();
			}break;*/
                case errors:{
                    server.errors=new server.errors();
                }break;
                case errors_list:{
                    server.errors_list=new server.errors_list();
                }break;
                case book_list:{
                    server.book_list=new server.book_list();
                }break;
                case book:{
                    server.book=new server.book();
                }break;
                case save_book:{
                    server.save_book=new server.save_book();
                }break;
                case test:{
                    server.test=new server.test();
                }break;
            }
        }else if(cs==json_enum_cs.client){
            client=new client();
            //client=new client();
            //初始化变量
            switch(e) {
                case login:{
                    client.login=new client.login();
                }break;
                case logout:{
                    client.logout=new client.logout();
                }break;
                case register:{
                    client.register=new client.register();
                }break;
                case signup:{
                    client.signup=new client.signup();
                }break;
                case change_username:{
                    client.change_username=new client.change_username();
                }break;
                case change_password:{
                    client.change_password=new client.change_password();
                }break;
                case paper_list:{
                    client.paper_list=new client.paper_list();
                }break;
                case paper:{
                    client.paper=new client.paper();
                }break;
                case paper_item:{
                    client.paper_item=new client.paper_item();
                }break;
                case database_list:{
                    client.database_list=new client.database_list();
                }break;
                case database_change:{
                    client.database_change=new client.database_change();
                }break;
			/*case database:{
				client.database=new client.login();
			}break;*/
                case errors:{
                    client.errors=new client.errors();
                }break;
                case errors_list:{
                    client.errors_list=new client.errors_list();
                }break;
                case book_list:{
                    client.book_list=new client.book_list();
                }break;
                case book:{
                    client.book=new client.book();
                }break;
                case save_book:{
                    client.save_book=new client.save_book();
                }break;
                case test:{
                    client.test=new client.test();
                }break;
            }
        }
        dataclass=e.toString();
    }
    //通用属性：
    String dataclass;
    String userid;
    Boolean error;
    client client;
    server server;
    //客户端===========================================================================
    static class client{
        //登录
        login login;
        static class login{
            String username;
            String password;
        }
        logout logout;
        static class logout{
            String confirm;				//确认登出
        }
        //注册
        register register;
        static class register{
            String username;
            String password;
            int sex;
            String number;
            String email;
        }
        //签到
        signup signup;
        static class signup{
            String confirm;				//确认签到
        }
        //修改账号
        change_username change_username;
        static class change_username{
            String newusername;
        }
        //修改密码
        change_password change_password;
        static class change_password{
            String newpassword;
        }
        //客户端获取指定题库id的试卷列表
        paper_list paper_list;
        static class paper_list{
            String databaseid;			//题库id
        }
        //客户端获取指定试卷信息
        paper paper;
        static class paper{
            String paperid;		//试卷在题库中的id
            String papername;	//试卷名称
        }
        //客户端获取执行试卷的某个试题
        paper_item paper_item;
        static class paper_item{
            String paperid;		//试卷在用户题库的id
            int index;			//试题在试卷中的索引（题号）
        }
        //获取数据库链表
        database_list database_list;
        static class database_list{
            String confirm;		//确认
        }
        //客户端修改默认题库
        database_change database_change;
        static class database_change{
            String newdatabaseid;
        }
        //客户端获取题库信息
		/*database database;
		static class database{
			String databaseid;
		}*/
        //获取错题集列表名称
        errors_list errors_list;
        static class errors_list{
            String confirm;		//确认
        }
        //获取指定错题信息;
        errors errors;
        static class errors{
            int index;			//错题在错题集中的索引
        }
        //获取笔记列表
        book_list book_list;
        static class book_list{
            String confirm;		//确认
        }
        //获取笔记列表的指定信息
        book book;
        static class book{
            int index;			//笔记在笔记列表的索引
        }
        //保存笔记
        save_book save_book;
        static class save_book{
            String text;		//笔记内容
            String date;		//保存时间
        }
        //测试
        test test;
        static class test{

        }

    }
    //客户端===========================================================================
    static class server{
        Boolean error;		//判断操作是否成功
        //登录
        login login;
        static class login{
            Boolean result;				//true，允许登录
        }
        //登出
        logout logout;
        static class logout{
            Boolean result;				//true，确认登出
        }
        //注册
        register register;
        static class register{
            Boolean result;				//true，确认将用户添加进用户表
        }
        //签到
        signup signup;
        static class signup{
            int times;					//返回签到次数
            Boolean is;					//true，今天已经签到
        }
        //确认账号修改
        change_username change_username;
        static class change_username{
            Boolean result;				//true，修改成功
            String username;			//修改好的用户名
        }
        //确认密码修改
        change_password change_password;
        static class change_password{
            Boolean result;				//true，修改成功
        }
        //在用户默认题库中查找试卷列表
        paper_list paper_list;
        static class paper_list{
            String [] list;				//列表名称
            String [] idlist;			//试卷id数组，与上面一一对应相同
            int length;					//列表长度
        }
        //发送题库中指定试卷的信息
        paper paper;
        static class paper{
            String papername;			//试卷名称
            String paperinfo;			//试卷详情
            int	index;					//试卷在用户默认题库中的索引
            int choice_qu_num;  		//选择题数量
            int completion_qu_num;		//填空题数量
        }
        //客户端获取执行试卷的某个试题
        paper_item paper_item;
        static class paper_item{
            String text;				//试题题目
            String type;				//试题属性，选择题/填空题
            String answer;				//填空题答案
            String [] fanswer;			//选择题全部选项
            int [] cho_index;			//选择题正确选项的索引，可能是多选题
            int index;					//此题在试卷中的索引
        }
        //获取数据库链表
        database_list database_list;
        static class database_list{
            String [] list;				//数据库列表
            String [] idlist;			//数据库id列表
            int length;					//数据库列表长度
        }
        //客户端修改默认题库
        database_change database_change;
        static class database_change{
            Boolean result;				//true，修改成功
        }
        //根据databaseid返送该题库信息
		/*database database;
		static class database{
			String text;				//题库内容
			int papernum;				//试卷数量
			String [] list;				//试卷
		}*/
        //获取错题集列表名称
        errors_list errors_list;
        static class errors_list{
            String [] list;				//错题集列表
            String [] idlist;			//错题集id列表
            int length;					//错题集列表长度
        }
        //获取指定错题信息;
        errors errors;
        static class errors{
            String id;			//错题id
            int index;					//错题在错题集中的索引
        }
        //获取笔记列表
        book_list book_list;
        static class book_list{
            String [] list;				//笔记列表
            String [] idlist;			//笔记id列表
            int length;					//笔记列表长度
        }
        //获取笔记列表的指定信息
        book book;
        static class book{
            String id;			//笔记id
            int index;			//笔记在笔记列表的索引
        }
        //保存笔记
        save_book save_book;
        static class save_book{
            Boolean result;				//true，保存成功
        }
        //测试
        test test;
        static class test{

        }
    }
}



